#include "AnimalFactory.h"
#include <iostream>

int main() {
  try {
    // 创建一个 AnimalFactory 实例，加载 libCatPlugin.so
    AnimalFactory factory("./lib/libcat.so");
    // 创建猫对象
    AnimalApiPtr cat = factory.createAnimal("Whiskers");
    cat->makeSound(); // 调用猫的叫声

    // 如果需要，可以动态加载其他库创建其他动物对象
    AnimalFactory dogFactory("./lib/libdog.so");
    AnimalApiPtr dog = dogFactory.createAnimal("Buddy");
    dog->makeSound(); // 调用狗的叫声
  } catch (const std::exception &e) {
    std::cerr << "Error: " << e.what() << std::endl;
    return 1;
  }

  return 0;
}